function barcode_read(barcode, old_barcode){
	$.ajax({
		url: 'contagens_get_info.php',
		type: 'post',
		data: {'codigo_barras': barcode, 'ficheiro_backup': $('#ficheiro_backup').val()},
		dataType: 'json',
		success: function (data, textStatus) {
			if(!data.empty){
				add_to_contagem(data, barcode);
			} else {
				add_error(barcode, data, old_barcode);
			}
		},
		error: function (XMLHttpRequest, textStatus, errorThrown){
			add_error(barcode, '', old_barcode);
		}
	});
}

function add_to_contagem(data, barcode){
	switch (data.tipo_codigo){
		case '1':
			var has_produto = $('#codigos_contados').find("input[name='codigos_barras_produtos[]']").filter("[value="+data.info.codigo_barras_id+"]");
			if(has_produto.length > 0){
				var flag = false;
				has_produto.each(function (){
					if(parseInt($(this).next().next().next().val()) && parseInt($(this).next().next().next().val()) != 0){
						$(this).next().next().next().val(parseInt($(this).next().next().next().val())+1);
						flag = true;
					}
				});
			} 
			if(!flag){
				var new_code = $('#read_li').clone(true).removeAttr('id');
				new_code.find('input:eq(0)').val(data.info.codigo_barras_id);
				new_code.find('input:eq(1)').val(data.info.Produtos.nome + " - " + data.info.Produtos.Categorias.nome);
				new_code.find('input:eq(2)').val(barcode);
				new_code.find('input:eq(3)').val(1);
				new_code.find('input:eq(3)').dblclick(function (){
					if ($(this).valid()){$(this).val(parseInt($(this).val())+1);}
				});
				new_code.find('input:eq(3)').change(function (){
					if ($(this).valid()){
						$(this).tooltip().block;
						$(this).css('border-color', 'gray');
					}
				});
				new_code.find('input:eq(3)').addClass('number');
				$('#codigos_contados').append(new_code);
			}
			$('#last_produtct_barcode_read').val(barcode);
		break;
		case '2':
			if($('#last_produtct_barcode_read').val() != ''){
				//alert('fgsdfgsdf');
				var has_produto = $('#codigos_contados').find("input.codigos_barras[value="+$('#last_produtct_barcode_read').val()+"]");
				if(parseInt(data.info.porcao) && parseInt(data.info.porcao) != 0){
					var flag = false;
					has_produto.each(function (){
						if(parseInt($(this).next().val()) && parseInt($(this).next().val()) != 0){
							$(this).next().val(parseInt($(this).next().val())-1+parseInt(data.info.porcao));
							flag = true;
						}
					});
					if(!flag){
						var new_code = has_produto.filter(':first').parent().clone(true).removeAttr('id');
						new_code.find('input:eq(3)').val(data.info.porcao);
						$('#codigos_contados').append(new_code);
					}
				} else {
					has_produto.each(function (){
						if(parseInt($(this).next().val()) && parseInt($(this).next().val()) == 1){
							$(this).parent('li').remove();
						} else {
							if (parseInt($(this).next().val()) != 0) {
								$(this).next().val(parseInt($(this).next().val() - 1));
							}
						}
					});
					var new_code = has_produto.filter(':first').parent().clone(true).removeAttr('id');
					new_code.find('input:eq(3)').val(data.info.porcao);
					$('#codigos_contados').append(new_code);
				}
				$('#last_produtct_barcode_read').val('');
			} else {
				add_error(barcode, {"tipo_codigo":"2", "no_product":true});
			}
		break;
		case '3':
			// DO NOTHING;
		break;
		default:
			add_error(barcode, '');
		break;
	}
}

function add_error(unread_barcode, data, old_barcode){
	
	$('#label_erros').css('color', 'red');
	$('#label_erros').css('font-weight', 'bold');
	
	var error_id = $('#numero_erros_leitura').val();
	$('#numero_erros_leitura').val(parseInt($('#numero_erros_leitura').val())+1);
	
	var alert;
	if(unread_barcode != ''){
		switch (data.tipo_codigo){
			case '1':
				alert = $('#produto_n_encontrado').clone(true).removeAttr('id').css('display','block');
			break;
			case '2':
				if (data.no_product) {
					alert = $('#sem_produto_para_aplicar').clone(true).removeAttr('id').css('display','block');
				} else {
					alert = $('#porcao_n_encontrado').clone(true).removeAttr('id').css('display','block');
				}
			break;
			case '3':
				//alert = $('#codigo_n_encontrado').clone(true).removeAttr('id').css('display','none');
			break;
			default:
				alert = $('#codigo_n_encontrado').clone(true).removeAttr('id').css('display','block');
			break;
		}
		alert.html(alert.html() + '[' + unread_barcode + ']');
	} else {
		alert = $('#leitura_vazia').clone(true).removeAttr('id').css('display','block');
	}
	
	var alertContados = alert.clone(true);
	
	$('#erros_leitura').find('ul').append('<li id="erro_window_'+error_id+'"></li>');
	$('#erros_leitura').find('ul').find('li:last').append('<a class="a_ref_errors" href="#erro_'+error_id+'">'+alert.html()+'</a>');
	$('#erros_leitura').find('ul').find('li:last').append($('#remove_alerta').clone(true).removeAttr('id').css('display','block'));
	$('#erros_leitura').find('ul').find('li:last').append('<input type="hidden" class="error_id" value="'+error_id+'" />');
	
	$('#codigos_contados').append('<li id="erro_'+error_id+'"></li>');
	$('#codigos_contados').find('li:last').append('<label class="error_leitura">Antes: '+old_barcode+'</label>');
	$('#codigos_contados').find('li:last').append(alertContados);
	$('#codigos_contados').find('li:last').append('<label class="error_leitura unchecked">Depois: </label>');
	$('#codigos_contados').find('li:last').append($('#remove_alerta').clone(true).removeAttr('id').css('display','block'));
	$('#codigos_contados').find('li:last').append('<input type="hidden" class="error_id" value="'+error_id+'" />');
}

function hide_n_show_erros(){
	if($('#erros_leitura').is(':visible')){
		$('#erros_leitura').jqmHide();
	} else {
		$('#erros_leitura').jqmShow();
	}
}